#ifndef _MAINPAGE_H_
#define _MAINPAGE_H_

#ifdef __cplusplus
extern "C" {
#endif

#ifdef __cplusplus
}
#endif

#include <thread>
#include <string>
#include <vector>
#include <string.h>
#include <mutex>
#include "MainPage_gui.h"

using namespace std;

class MainPage;

class MainPage
{
public:
struct appinfo
{
    string name;            //应用程序名称
    string exec;                //应用程序执行文件
    string argv;                //应用程序参数
    string icon;                //应用程序icon(bin)
};

struct sysconfig
{
    int brightness;         //保存亮度
    int volume;             //保存音量
    int auto_position;      //是否自动定位
    string mainbg_file;     //主界面壁纸文件
    string host_ip;         //pc resource应用主机ip地址
    string weather_key;           //天气key
    string weather_city;                //天气城市
    vector<appinfo> apps;           //欲安装的应用程序信息
};  

private:
    int tick;                           //计数值
    mutex *ui_mutex;
    string bg_file;             //主界面背景图片文件名
    thread *pthread;         //独立于UI的线程
    bool thread_exit_flag;          //线程退出标志
public:
    MainPage(exit_cb_t exit_cb, mutex &mutex);
    ~MainPage();
    
    bool readconfig(sysconfig &config);
    void saveconfig(sysconfig &config);
    bool getWeather(gui_weather_t &weahter);
    bool getNetTime(gui_time_t &time);
    void getSysTime(gui_time_t &time);
    void installApplications(vector<appinfo> &apps);

    const void setBgFile(string &file) { bg_file = file; }
    const void tickInc(void) { tick++; }
    const void tickClear(void) { tick = 0; }

    mutex *getUIMutex(void) const { return ui_mutex; }
    const int getTick(void) const { return tick; }
    const string &getBgFile() const { return bg_file; }
    const bool getExitFlag() const { return thread_exit_flag; }

};



#endif